// 接口可以理解为一个约定 一个规范;

// ! 接口使用 interface 进行声明

interface AjaxOptions{
    url:string,
    type?:string,  // ? 在这里加上问好之后 会变成一个可选属性
    data?:object,
    success(data:object):void
}


// options 参数中需要 url type data success
function ajax(options:AjaxOptions){

}

// 使用了接口就必须完全遵守接口的内容
ajax({
    url:'baidu.com',
    type:'post', //这里可以不填 因为上面声明了 可选属性
    data:{},
    success({}){}
})


interface Ooiunt{
    // readonly 是一个只读属性 不可以修改
   readonly x:number,
    y:number
    // 这里代表会有额外的参数 让接口忽略掉就可以了
    [propName:string]:any
}

let poi:Ooiunt ={
    x:10,
    y:10
}

// poi.x =100 因为是只读属性 所以这里会报错
poi.y =100


let poi1:Ooiunt = {
    x:100,
    y:1000,
    z:123 // 配置上propName之后就不会报错
}